RUMIN-TOPO -- simulated (PRINT-RECORDER-REPORT) output, 96-action solution.
Source: rumin-topo solution (96 steps, 4 cycles).lisp

SIMULATED, NOT CAPTURED.  This is what PRINT-RECORDER-REPORT would emit for that
solution under the by-actor phase convention.  It was produced by applying
PARSE-RECORDER-PATH, RECORDER-CYCLE-RUNS, RECORDER-CYCLE-RECORDING-SEQUENCE and
RECORDER-CYCLE-PLAYBACK-SEQUENCE to the VALIDATE-SOLUTION action list by hand; no
search was run.  Reproduce it for real with the form at the end of this file --
that takes seconds, because it replays the known path instead of searching for it.

Exact, being pure functions of the path and the AGENT1 / AGENT1* sides:
  the phase sequences, the PAUSE and RESUME markers, the closure, and every depth.

Derived rather than replayed:
  elapsed time -- every action in this problem has duration 1, so PROBLEM-STATE.TIME
    after step N is N.0 and each cycle's elapsed time equals its depth;
  value change -- rumin-topo defines no state value, so it is 0.0 throughout.

One formatting difference from a real capture: each entry is printed here on a
single line.  The REPL's pretty printer wraps the long multi-leg MOVE entries at
the right margin.

Live agent = AGENT1; ghost agent = AGENT1*.  Each phase has exactly one actor: the
recording phase is AGENT1* headed by AGENT1's START-RECORDER, the playback phase is
AGENT1 alone.  A (PAUSE) is a pause point created while recording; the matching
(RESUME) is where AGENT1 releases the ghost.  They stand one-to-one.

==============================================================================
Recorder cycle 1:

Setup phase:

Recording phase:
(1.0 (START-RECORDER AGENT1))
(PAUSE)
(5.0 (MOVE AGENT1* ((WALK LOCATION3 NIL LOCATION2))))
(6.0 (PICKUP-TRAY AGENT1* TRAY1* LOCATION2 LOCATION2))
(PAUSE)
(11.0 (MOVE AGENT1* ((STAIRS LOCATION2 NIL LOCATION4))))
(PAUSE)
(21.0 (MOVE AGENT1* ((STAIRS LOCATION4 NIL LOCATION2))))
(PAUSE)
(23.0 (MOVE AGENT1* ((WALK LOCATION2 NIL LOCATION3))))
(24.0 (PUT-TRAY AGENT1* TRAY1* GROUND LOCATION3))
(25.0 (STOP-RECORDER AGENT1*))

Playback phase:
(2.0 (MOVE AGENT1 ((WALK LOCATION3 NIL LOCATION2) (STAIRS LOCATION2 NIL LOCATION4) (WALK LOCATION4 NIL LOCATION13))))
(3.0 (PICKUP-CONNECTOR AGENT1 CONNECTOR1 LOCATION13))
(4.0 (MOVE AGENT1 ((WALK LOCATION13 NIL LOCATION4))))
(RESUME)
(7.0 (CONNECT-CONNECTOR AGENT1 CONNECTOR1 LOCATION2 TRAY1* (CONNECTOR1* TRANSMITTER1)))
(8.0 (MOVE AGENT1 ((STAIRS LOCATION4 NIL LOCATION2))))
(9.0 (PICKUP-TRAY AGENT1 TRAY1 LOCATION2 LOCATION2))
(10.0 (MOVE AGENT1 ((WALK LOCATION2 (GATE1) LOCATION1))))
(RESUME)
(12.0 (MOVE AGENT1 ((WALK LOCATION1 (GATE2) LOCATION6))))
(13.0 (PUT-TRAY AGENT1 TRAY1 PLATE1 LOCATION6))
(14.0 (MOVE AGENT1 ((WALK LOCATION6 (GATE3) LOCATION7))))
(15.0 (PICKUP-BOX AGENT1 BOX1 LOCATION7 LOCATION7))
(16.0 (MOVE AGENT1 ((WALK LOCATION7 (GATE2 GATE3) LOCATION8))))
(17.0 (PUT-BOX AGENT1 BOX1 GROUND LOCATION8))
(18.0 (MOVE AGENT1 ((WALK LOCATION8 (GATE2) LOCATION6))))
(19.0 (PICKUP-TRAY AGENT1 TRAY1 LOCATION6 LOCATION6))
(20.0 (MOVE AGENT1 ((WALK LOCATION6 (GATE2) LOCATION1))))
(RESUME)
(22.0 (MOVE AGENT1 ((WALK LOCATION1 (GATE1) LOCATION3))))
(RESUME)
Closure: explicit.
Cycle metrics: depth 25, elapsed time 25.0, value change 0.0.

Recorder cycle 2:

Setup phase:
(26.0 (MOVE AGENT1 ((WALK LOCATION3 NIL LOCATION2))))
(27.0 (PUT-TRAY AGENT1 TRAY1 GROUND LOCATION2))
(28.0 (MOVE AGENT1 ((WALK LOCATION2 NIL LOCATION3))))

Recording phase:
(29.0 (START-RECORDER AGENT1))
(30.0 (PICKUP-CONNECTOR AGENT1* CONNECTOR1* LOCATION3))
(31.0 (MOVE AGENT1* ((WALK LOCATION3 NIL LOCATION2) (STAIRS LOCATION2 NIL LOCATION4) (WALK LOCATION4 NIL LOCATION13))))
(32.0 (CONNECT-CONNECTOR AGENT1* CONNECTOR1* LOCATION13 GROUND (RECEIVER1)))
(33.0 (MOVE AGENT1* ((WALK LOCATION13 NIL LOCATION4) (STAIRS LOCATION4 NIL LOCATION2))))
(34.0 (PICKUP-TRAY AGENT1* TRAY1* LOCATION2 LOCATION2))
(PAUSE)
(49.0 (PUT-TRAY AGENT1* TRAY1* GROUND LOCATION2))
(50.0 (MOVE AGENT1* ((WALK LOCATION2 NIL LOCATION3))))
(51.0 (STOP-RECORDER AGENT1*))

Playback phase:
(35.0 (PICKUP-CONNECTOR AGENT1 CONNECTOR1 LOCATION3))
(36.0 (MOVE AGENT1 ((WALK LOCATION3 NIL LOCATION2) (STAIRS LOCATION2 NIL LOCATION4))))
(37.0 (CONNECT-CONNECTOR AGENT1 CONNECTOR1 LOCATION2 TRAY1* (CONNECTOR1* TRANSMITTER1)))
(38.0 (MOVE AGENT1 ((STAIRS LOCATION4 NIL LOCATION2) (WALK LOCATION2 (GATE1) LOCATION8))))
(39.0 (MOVE AGENT1 ((JUMP (LOCATION8 GROUND) NIL (LOCATION8 BOX1)))))
(40.0 (MOVE AGENT1 ((JUMP (LOCATION8 BOX1) NIL (LOCATION9 GROUND)))))
(41.0 (MOVE AGENT1 ((STAIRS LOCATION9 NIL LOCATION10))))
(42.0 (PICKUP-CONNECTOR AGENT1 CONNECTOR2 LOCATION10))
(43.0 (MOVE AGENT1 ((STAIRS LOCATION10 NIL LOCATION9) (JUMP LOCATION9 NIL LOCATION8) (WALK LOCATION8 (GATE1) LOCATION17))))
(44.0 (CONNECT-CONNECTOR AGENT1 CONNECTOR2 LOCATION17 GROUND (RECEIVER1)))
(45.0 (MOVE AGENT1 ((WALK LOCATION17 (GATE1) LOCATION8))))
(46.0 (PICKUP-BOX AGENT1 BOX1 LOCATION8 LOCATION8))
(47.0 (MOVE AGENT1 ((WALK LOCATION8 (GATE1) LOCATION2))))
(48.0 (PUT-BOX AGENT1 BOX1 GROUND LOCATION2))
(RESUME)
Closure: explicit.
Cycle metrics: depth 26, elapsed time 26.0, value change 0.0.

Recorder cycle 3:

Setup phase:
(52.0 (PICKUP-CONNECTOR AGENT1 CONNECTOR1 LOCATION2))
(53.0 (CONNECT-CONNECTOR AGENT1 CONNECTOR1 LOCATION2 BOX1 (CONNECTOR2 TRANSMITTER1)))
(54.0 (MOVE AGENT1 ((WALK LOCATION2 NIL LOCATION3))))

Recording phase:
(55.0 (START-RECORDER AGENT1))
(PAUSE)
(61.0 (STOP-RECORDER AGENT1*))

Playback phase:
(56.0 (MOVE AGENT1 ((WALK LOCATION3 NIL LOCATION2))))
(57.0 (PICKUP-TRAY AGENT1 TRAY1 LOCATION2 LOCATION2))
(58.0 (MOVE AGENT1 ((WALK LOCATION2 (GATE1) LOCATION12))))
(59.0 (PUT-TRAY AGENT1 TRAY1 PLATE3 LOCATION12))
(60.0 (MOVE AGENT1 ((WALK LOCATION12 (GATE1) LOCATION3))))
(RESUME)
Closure: explicit.
Cycle metrics: depth 10, elapsed time 10.0, value change 0.0.

Recorder cycle 4:

Setup phase:

Recording phase:
(62.0 (START-RECORDER AGENT1))
(PAUSE)
(79.0 (MOVE AGENT1* ((WALK LOCATION3 NIL LOCATION2))))
(80.0 (PICKUP-CONNECTOR AGENT1* CONNECTOR1* LOCATION2))
(81.0 (CONNECT-CONNECTOR AGENT1* CONNECTOR1* LOCATION2 BOX1* (CONNECTOR2* TRANSMITTER2)))
(PAUSE)
(90.0 (MOVE AGENT1* ((WALK LOCATION2 NIL LOCATION3))))
(91.0 (STOP-RECORDER AGENT1*))

Playback phase:
(63.0 (MOVE AGENT1 ((WALK LOCATION3 NIL LOCATION2))))
(64.0 (PICKUP-CONNECTOR AGENT1 CONNECTOR1 LOCATION2))
(65.0 (MOVE AGENT1 ((WALK LOCATION2 (GATE1) LOCATION8))))
(66.0 (PUT-CONNECTOR AGENT1 CONNECTOR1 LOCATION8 GROUND))
(67.0 (MOVE AGENT1 ((WALK LOCATION8 (GATE1) LOCATION2))))
(68.0 (PICKUP-BOX AGENT1 BOX1 LOCATION2 LOCATION2))
(69.0 (MOVE AGENT1 ((WALK LOCATION2 (GATE1) LOCATION8))))
(70.0 (PUT-BOX AGENT1 BOX1 GROUND LOCATION8))
(71.0 (PICKUP-CONNECTOR AGENT1 CONNECTOR1 LOCATION8))
(72.0 (MOVE AGENT1 ((JUMP (LOCATION8 GROUND) NIL (LOCATION8 BOX1)))))
(73.0 (MOVE AGENT1 ((JUMP (LOCATION8 BOX1) NIL (LOCATION9 GROUND)))))
(74.0 (CONNECT-CONNECTOR AGENT1 CONNECTOR1 LOCATION9 PLATE2 (CONNECTOR2*)))
(75.0 (MOVE AGENT1 ((JUMP LOCATION9 NIL LOCATION8) (WALK LOCATION8 (GATE1) LOCATION17))))
(76.0 (PICKUP-CONNECTOR AGENT1 CONNECTOR2 LOCATION17))
(77.0 (MOVE AGENT1 ((WALK LOCATION17 (GATE1) LOCATION11))))
(78.0 (CONNECT-CONNECTOR AGENT1 CONNECTOR2 LOCATION11 GROUND (CONNECTOR1 RECEIVER2)))
(RESUME)
(82.0 (MOVE AGENT1 ((WALK LOCATION11 NIL LOCATION8))))
(83.0 (PICKUP-BOX AGENT1 BOX1 LOCATION8 LOCATION8))
(84.0 (MOVE AGENT1 ((WALK LOCATION8 (GATE5) LOCATION14))))
(85.0 (PUT-BOX AGENT1 BOX1 GROUND LOCATION14))
(86.0 (MOVE AGENT1 ((WALK LOCATION14 (GATE5) LOCATION12))))
(87.0 (PICKUP-TRAY AGENT1 TRAY1 LOCATION12 LOCATION12))
(88.0 (MOVE AGENT1 ((WALK LOCATION12 (GATE5) LOCATION14))))
(89.0 (PUT-TRAY AGENT1 TRAY1 BOX1 LOCATION14))
(RESUME)
Closure: explicit.
Cycle metrics: depth 30, elapsed time 30.0, value change 0.0.

Trailing setup:
(92.0 (MOVE AGENT1 ((LADDER LOCATION14 (LADDER2) LOCATION5))))
(93.0 (PICKUP-TRAY AGENT1 TRAY1 LOCATION14 LOCATION5))
(94.0 (MOVE AGENT1 ((WALK LOCATION5 NIL LOCATION15))))
(95.0 (PUT-TRAY AGENT1 TRAY1 PLATE4 LOCATION15))
(96.0 (MOVE AGENT1 ((WALK LOCATION15 (GATE6) LOCATION16))))
Trailing metrics: depth 5, elapsed time 5.0, value change 0.0.
Complete solution totals: depth 96, elapsed time 96.0, value change 0.0.

==============================================================================
To reproduce this report from the stored solution without searching:

(progn (ql:quickload :wouldwork) (in-package :ww))
(stage rumin-topo)

(defparameter *rumin-actions*
  '(<paste the 96 action forms from the VALIDATE-SOLUTION list here>))

(defparameter *rumin-path*
  (loop for action in *rumin-actions*
        for step from 1
        collect (list (float step) action)))

(print-recorder-report
  (let* ((validation (validate-action-sequence *start-state* *rumin-path*))
         (final (action-sequence-validation-final-state validation)))
    (unless (action-sequence-validation-success-p validation)
      (error "Path failed at ~S: ~S"
             (action-sequence-validation-failure-action validation)
             (action-sequence-validation-failure-reason validation)))
    (make-solution :depth (length *rumin-path*)
                   :time (problem-state.time final)
                   :value (problem-state.value final)
                   :path *rumin-path*
                   :goal final)))
